由于调库太多,有时会忘记底层的算法如何实现,即使看paper知道算法是如何运算,也无法熟练的代码落地,所以,温习一下一些机器学习的基本名词解释和具体优化算法。
设自变量 x=(x1,x2,...,xn)T ,
1、当因变量 f(x) 为标量:
1.1 一阶导数构成的向量为梯度向量
g(x)=∇f(x)=(∂x1∂f,∂x2∂f,⋯,∂xn∂f)T
1.2 二阶导数构成的矩阵为海森矩阵
H=⎣⎢⎢⎢⎡∂x1x1∂f∂x2x1∂f⋯∂xnx1∂f∂x1x2∂f∂x2x2∂f⋯∂xnx2∂f⋯⋯⋯⋯∂x1xn∂f∂x2xn∂f⋯∂xnxn∂f⎦⎥⎥⎥⎤
2、当因变量 f(x)=(f1(x),f2(x),...,fm(x))T 为向量:
一阶导数构成的矩阵为雅各比矩阵
H=⎣⎢⎢⎢⎡∂x1∂f1(x)∂x1∂f2(x)⋯∂x1∂fm(x)∂x2∂f1(x)∂x2∂f2(x)⋯∂x2∂fm(x)⋯⋯⋯⋯∂xn∂f1(x)∂xn∂f2(x)⋯∂xn∂fm(x)⎦⎥⎥⎥⎤
那么海森矩阵为梯度向量 g(x) 对自变量 x 的雅各比矩阵:
H=∇x[g(x)]=∇x[(∂x1∂f,∂x2∂f,⋯,∂xn∂f)T]=⎣⎢⎢⎢⎡∂x1x1∂f∂x2x1∂f⋯∂xnx1∂f∂x1x2∂f∂x2x2∂f⋯∂xnx2∂f⋯⋯⋯⋯∂x1xn∂f∂x2xn∂f⋯∂xnxn∂f⎦⎥⎥⎥⎤